package com.pluto.order;


import com.alibaba.cloud.nacos.NacosConfigManager;
import com.alibaba.nacos.api.config.listener.Listener;
import org.springframework.boot.ApplicationRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.openfeign.EnableFeignClients;
import org.springframework.context.annotation.Bean;

import java.util.concurrent.Executor;
import java.util.concurrent.Executors;

@EnableDiscoveryClient
@SpringBootApplication
@EnableFeignClients
public class OrderMyApplication {

    public static void main(String[] args) {
        SpringApplication.run(OrderMyApplication.class, args);
    }

	// ApplicationRunner 是 Spring Boot 提供的一个接口，用于在应用程序启动后执行一些操作。
	// 它的 run 方法会在应用程序启动后被调用，并且可以在其中执行一些初始化操作。
	// 例如，在应用程序启动后，我们可以从数据库中加载一些数据，或者执行一些定时任务。
	// 这个接口的实现类可以通过 @Bean 注解来注册到 Spring 容器中，这样 Spring Boot 就会在应用程序启动后调用它的 run 方法。
	@Bean
	ApplicationRunner applicationRunner(NacosConfigManager nacosConfigManager) {
		return args -> {
			nacosConfigManager.getConfigService().addListener("service-order.properties", "DEFAULT_GROUP",
					new Listener() {
						@Override
						public Executor getExecutor() {
							return Executors.newFixedThreadPool(4);
						}

						@Override
						public void receiveConfigInfo(String configInfo) {
							System.out.println(configInfo);
							System.out.println("发送邮件");
						}
					}
			);
		};
	}
}
